package field

import (
	"yunj/pkg/yunj/core/builder/builderconsts"
	"yunj/pkg/yunj/core/builder/form"
)

// 文字
type Txt struct {
	form.Field
	Align  string `json:"align"`  // 排列
	Color  string `json:"color"`  // 颜色
	Size   uint   `json:"size"`   // 文字大小font-size
	Weight uint   `json:"weight"` // 文字font-weight
}

func NewTxt(id string, desc ...string) *Txt {
	f := &Txt{}
	form.SetFieldInstance(&f.Field, f)
	f.SetFieldId(id)
	if len(desc) > 0 {
		f.SetDesc(desc[0])
	}
	return f
}

// 设置字段描述
func (f *Txt) SetDesc(desc string) *Txt {
	f.Desc = desc
	return f
}

// 设置栅格布局
// 超小屏幕(手机<768px)、小屏幕(平板≥768px)、中等屏幕(桌面≥992px)、大型屏幕(桌面≥1200px)、超大屏幕(桌面≥1400px)
// 总列数：12
func (f *Txt) SetGrid(num ...any) *Txt {
	f.Grid = num
	return f
}

// 设置字段权限
func (f *Txt) SetAuth(auth string) *Txt {
	f.Auth = auth
	return f
}

// 设置排列方向
// 排列方向：left 居左、center 居中（默认）、right 居右
func (f *Txt) SetAlign(align string) *Txt {
	f.Align = align
	return f
}

// 设置颜色
func (f *Txt) SetColor(color string) *Txt {
	f.Color = color
	return f
}

// 设置文字大小font-size
func (f *Txt) SetSize(size uint) *Txt {
	f.Size = size
	return f
}

// 设置文字font-weight
func (f *Txt) SetWeight(weight uint) *Txt {
	f.Weight = weight
	return f
}

// 处理字段属性
func (f *Txt) HandleAttr() error {
	f.Readonly = true
	// Align
	if f.Align == "" {
		f.Align = builderconsts.ALIGN_CENTER
	}
	// Weight
	if f.Weight == 0 {
		f.Weight = 600
	}
	return nil
}
